Computing is no longer a preserve of traditional computers, but instead includes portable computing devices capable of establishing connections to other devices. Such portable computing devices include operating systems supporting applications providing desired functionality to users. However, networking-capable portable computing devices suffer from failure-prone network connections. This is particularly true of devices utilizing wireless connections. Such failure-prone transient connections are termed dynamic connections.
Wireless dynamic connections include symmetric or asymmetric connectivity to a base station, which is also termed an access point (“AP”). In typical asymmetric connections the forward link (from the base station to the device) bandwidth is larger than the reverse link (from the device to the base station) bandwidth. In contrast, symmetric connections have equal bandwidth available in both the forward and the reverse link. Performance of applications communicating over wireless connections typically depends on available bandwidth, the bit error rates (“BER”) encountered and the end-to-end latency that may range from the order of few or 10s of milliseconds to the order of 100s of milliseconds.
A measure of the effectiveness of an application using a wireless connection is the amount of data transmitted across the connection in the course of timely completion of an assigned task. The time taken to transmit data, which is an indicator of application performance, depends on the amount of data, the availability of suitable connections and the error rate in transmitting data. High error rates require significant retransmission of data-packets, thus slowing down the application. The amount of data is determined by not only the data generated by the application, but also by the need to package the data into data packets. Header information encapsulates each data packet and enables routers to direct the data packet to a suitable target. Once received, the data packets are processed using the header information to extract and reconstitute the data from the data-packets.
Many computing devices allow selection of a suitable connection to other devices or network by sensing the available connections. Some devices select one or more suitable connections for a task at hand. Devices capable of discovering and responding to the nature and state of their connections are said to provide a “media-sense” property. Devices with media-sense make a user's computing experience less intimidating if selecting suitable connections, establishing connections and monitoring the connections is transparent to the user. Naturally, applications providing pervasively used functionality such as email and web browsing benefit by being media-sense aware.
Devices that are not media-sense aware merely fail when a connection fails. This failure may be limited to an application using the failed connection or may result in the need to reboot the entire device or at the least reinitializing/relaunching the application. Media-sense aware devices, on the other hand, actually monitor connections or save the state of the machine to allow the user to continue while alternative connections are explored and established. Even more sophisticated media-sense aware devices not only try alternatives, but also compare the available connections to choose the optimal connection.
Media-sense aware devices exhibit client-server interactions in that one device, the client, requests data or services from the other device, the server. Examples of applications providing client-server interactions include “OUTLOOK®” manufactured by MICROSOFT CORPORATION® of Redmond, Wash. “OUTLOOK®” provides users with email, organizer, calendar services and the ability to customize user experience. “OUTLOOK®” assumes the availability of reliable static connections for its operations. Accordingly, using dynamic connections compromises OUTLOOK®'s performance due to dynamic connections' failure-prone transient nature.
However, media-sense devices are not enough for effective client-server application operation in a dynamic computing environment. In addition to broken dynamic connections, computing environments present problems relating to bandwidth limitations, computational resource limitations and security needs/requirements. Furthermore, dynamic computing environment applications are not expected to compromise on the functionality provided to the users such as ready access to stock information, voice mail, chat rooms and the like—and all while on the go.